# Mode Switching Commands

Commands that toggle AI behavior modes: YOLO, Plan, Vulnerability Hunting, on-demand Tool Search, and Tool Display density.

Back to: [Command Panel Guide](./09.0.Command%20Panel%20Guide.md)

---

## `/yolo`

Toggle YOLO mode (auto-approve mode).

- **Function**: Turn on/off automatic approval for tool calls, no manual confirmation needed
- **Use Cases**: Quick execution when trusting AI operations, or turn off when manual review needed
- **Status**: Status saved in localStorage, persists after restart
- **Example**: Type `/yolo` to toggle mode

## `/plan`

Toggle Plan mode (planning mode).

- **Function**: Turn on/off plan mode, AI will make detailed plan before execution
- **Use Cases**: Complex tasks need planning first, or simple tasks execute directly
- **Status**: Status saved in localStorage
- **Example**: Type `/plan` to toggle mode

## `/vulnerability-hunting`

Toggle Vulnerability Hunting Mode.

- **Function**: Turn on/off Vulnerability Hunting Mode, a professional security analysis agent
- **Features**:
  - Systematic 5-phase vulnerability analysis workflow
  - Generate executable verification scripts
  - Create detailed security analysis reports
  - Support multiple vulnerability type detection (logic errors, security vulnerabilities, etc.)
- **Use Cases**: Conducting professional security audits or code vulnerability detection
- **Status**: Status saved in localStorage
- **Report Location**: `.snow/vulnerability-hunting/docs/`
- **Script Location**: `.snow/vulnerability-hunting/scripts/`
- **Detailed Guide**: See [Vulnerability Hunting Mode](./11.Vulnerability%20Hunting%20Mode.md)
- **Example**: Type `/vulnerability-hunting` to toggle mode

## `/tool-search`

Toggle Tool Search mode.

- **Function**: Turn Tool Search on/off (discover and load tools on demand)
- **Features**:
  - When enabled, Snow CLI prefers on-demand tool discovery to reduce upfront tool injection
  - When disabled, the full tool set is provided directly
  - The current state is persisted in the project's `.snow/settings.json`
- **Use Cases**: Switch between "save context" mode and "show all tools directly" mode
- **Example**: Type `/tool-search` to toggle the mode

## `/image-compress`

Toggle Image Context Compression mode.

- **Function**: When enabled, archives and renders the main session history as PNG images whenever `/compact` or automatic compression runs, then sends the images to the model as context
- **How It Works**: The history is retained as a local text archive; later compressions re-render the archive together with new messages rather than nesting previous image context
- **Prerequisite**: The active model must support vision. When `supportsVision` is explicitly set to `false`, Snow CLI falls back to standard text compression and does not generate PNG context
- **Mode Interaction**: Mutually exclusive with Hybrid Compress; enabling Image Context Compression automatically disables Hybrid Compress
- **Status**: Persisted in the project's `.snow/settings.json` (`imageCompressEnabled` field)
- **Use Cases**: Use it with a vision-capable model when you want to preserve more history as image context in long conversations
- **Example**: Type `/image-compress` to turn the mode on or off

## `/tool-display`

Switch tool call display density.

- **Function**: Control how tool calls and results are rendered in the conversation. Three modes are available: `full`, `compact`, `hidden`
  - `full` (default): Show tool name + arguments + full result
  - `compact`: Show only tool name + brief status summary
  - `hidden`: Hide all tool call process, show only AI reply
- **Arguments**:
  - No argument or `status`: Show the current display mode
  - `full` / `compact` / `hidden`: Switch to the specified mode
- **Status**: Persisted in `~/.snow/theme.json` (`toolDisplayMode` field), synced to the UI in real time
- **Use Cases**: Reduce visual noise when a task issues many tool calls, or fully hide tool activity to keep the conversation focused on AI replies
- **Example**:
  - `/tool-display compact` — collapse tool calls to a single status line
  - `/tool-display hidden` — hide all tool activity
  - `/tool-display` — show the current mode

> **Related: tool title markers `toolIcons`**  
> Controls chat tool-title **category markers** (`[?]`/`[$]`/`[R]`) and **status prefixes** (default `[ ]`/`✓`/`✗`); independent of `toolDisplayMode`; **not** the bottom StatusLine.  
> Config: `~/.snow/theme.json` -> `toolIcons` (default `true` = category markers on + compact status prefixes).  
> Commands: `/tool-icons`, `/tool-icons status on|off`, `snow cmd theme set toolIcons=status:success:✓`, etc.  
> See [08.Theme Settings](./08.Theme%20Settings.md#tool-icons-toolicons-commands).

## `/tool-icons`

Configure ASCII category markers and status prefixes for tool titles (independent of `/tool-display`).

- **Purpose**: Control status markers (`[ ]`/`✓`/`✗`/`[!]`/`[..]`) and category markers (`[?]`/`[$]`/`[R]`, etc.), with separate overrides
- **Args**:
  - no args or `status`: show category markers and status prefixes, current characters, and overrides
  - `on` / `off`: enable or disable **category** markers
  - `status on` / `status off`: enable or disable **status prefixes**
  - `status:<key>:<marker>`: override a status marker (`pending` / `success` / `error` / `warning` / `running`)
  - `status:<key>:`: restore the default for that key (success defaults to `✓`, error defaults to `✗`)
  - `<key>:<marker>`: shorthand when `<key>` is a reserved status name
  - `<tool>:<marker>`: set a category-marker override for one tool
  - `<tool>:`: clear that tool's category override (restore the built-in marker)
- **Persistence**: `~/.snow/theme.json` -> `toolIcons`; applies immediately to new tool titles, and resumed sessions rebuild historical tool titles from the current config
- **Use cases**: Prefer compact `✓ terminal-execute`, hide category markers, or customize status characters
- **Examples**:
  - `/tool-icons off` — category markers off (status prefixes still on by default)
  - `/tool-icons status off` — hide status prefixes
  - `/tool-icons status:success:✓` — set the success marker
  - `/tool-icons terminal-execute:[$]` — override the terminal category marker
  - `/tool-icons` — show the current status

Session-command alternative: `snow cmd theme set toolIcons=on|off`, `toolIcons=status:off`, etc. (see Theme Settings).

## `/tool-names` (alias `/tool-name`)

Customize chat tool title labels (**no built-in default translations**; unset tools keep their technical id).

> **Official path**: use this command or `snow cmd theme set toolDisplayNames=…`. **Do not** whole-file overwrite `~/.snow/theme.json` with `filesystem-*` (easy to clobber other theme fields).

- **Effect**: Friendly display name per tool; works for MCP / skills too
- **Args**:
  - none or `status`: list overrides
  - `<tool>:<display>`: set one
  - `<tool>:`: clear one
  - space/comma-separated pairs: batch set (single write)
  - `clear` / `reset`: clear all overrides
- **Persistence**: via theme API → `toolDisplayNames`; **new** tool titles only
- **Examples**:
  - `/tool-names` or `/tool-name`
  - `/tool-names websearch-search:Web Search`
  - `/tool-names filesystem-read:Read terminal-execute:Shell`
  - `/tool-names clear`

Session-command: `snow cmd theme set toolDisplayNames=websearch-search:Web Search` (single; batch prefer `/tool-names a:A b:B`).

## `/think-display`

Switch thinking content display mode.

- **Function**: Control how the model's thinking content is rendered in the conversation. Two modes are available: `full`, `compact`
  - `compact` (default): Compact thinking content (keep head + tail lines with ellipsis) before moving to the static area
  - `full`: Move all thinking content to the static area (original behavior)
- **Arguments**:
  - No argument or `status`: Show the current display mode
  - `full` / `compact`: Switch to the specified mode
- **Status**: Persisted in `~/.snow/theme.json` (`thinkDisplayMode` field), synced to the UI in real time
- **Use Cases**: When thinking content is too long and clutters the conversation, use `compact` mode to reduce visual noise while still keeping key thinking context
- **Example**:
  - `/think-display full` — move all thinking content to the static area
  - `/think-display compact` — compact thinking content before moving to the static area
  - `/think-display` — show the current mode
